1. Technical Field
The present invention relates generally to integrated circuit design, and more particularly, to integrated circuit design modeling that allows for dimension-dependent rule checking.
2. Related Art
Very large scale integrated (VLSI) circuits are designed using computer-implemented design systems that allow a designer to generate and test a circuit design before the more expensive manufacturing of the integrated circuit (IC). In order to ensure proper design of an IC, each design system and/or IC format includes a set of design rules that each circuit design must meet. That is, each IC design must pass a design rule check (DRC). One fundamental operation of DRC is dimension-dependent rule checking. Dimension-dependent rule checking ensures that dimensions, namely width and spacing, of parts of an IC meet a specific dimensional parameter, e.g., a size range. Among the most significant dimension-dependent rule checking are the width-dependent and spacing-dependent rules that prevent IC parts from being too large/small or too close together/too far apart.
Current DRC tools derive width and spacing of VLSI shapes using one-dimensional visibility or standard “shape-expand” and “shape-shrink” operations. Advancements in IC design have resulted in the various shapes of IC parts becoming more complex than simple rectangles. As a result, defining what is a “width” of a shape(s), or what is the “spacing” between shapes has become difficult and inconsistent. In particular, the conventional mathematical definition of “width” of any polygon is the smallest distance between any two parallel lines of support. This definition implies a unique width for any shape based on its convex hull. (Note that typically an IC non-convex polygon can be much more “narrow” than its associated convex hull, e.g., an L-shape). However, this definition is not appropriate for DRC among non-convex shapes as it assigns the unique width of the convex hull to the whole shape.
Where a DRC method uses one-dimensional (1D) visibility, the width or spacing near a vertical edge is often determined by other vertical edges that this edge can “see” along the horizontal direction. This approach is adequate in some cases but it often leads to results that are inconsistent as 1D visibility is not appropriate to characterize the width of a shape. For example, for any edge having a distance to another edge that varies along its length results in the width being inconsistent or indeterminable. Currently, there is no consistent or satisfactory definition for the “width” of an arbitrary shape(s) other than a rectangle. The above-described problem applies to spacing-dependent design rules also.
With regard to “expand” and “shrink” operations, most modern shape processing tools have functions that expand or shrink a shape by a given constant amount. The results of these operations are incrementally used to determine width and spacing. There are several problems with such an approach. First, the expand and shrink operation can give correct width results only for shapes consisting of axis parallel edges. Once an acute angle is present the results become incorrect. In addition, the expand and shrink operation is simple only in the case of convex shapes. For general non-convex shapes, even orthogonal ones, the expand and shrink operation is difficult and rather expensive in terms of computational time. Furthermore expand and shrink operations work only for given constant amounts and, therefore, many calls to these functions are typically required for standard shapes. As a result, the checking of dimension dependent rules becomes very cumbersome and time consuming.
One approach to checking spacing dependent rules is to represent a rule in a discrete form given by a small number of “buckets.” “Buckets” are rule implementations based on predefined numeric values or ranges of predefined numeric values. For example, buckets for spacing may mandate that a space be greater than a dimension S if at least one line has a width greater than a value W. In another example, a space is greater than or equal to a dimension S if both lines are greater than a value W. Using the expand/shrink approach to check this type rule is cumbersome and time consuming. Checking width-dependent spacing rules given in a function form (i.e., non-step or non-bucketed) would be even more cumbersome (if at all possible) by employing such methods. For example, it is not known how to implement a width-dependent rule that mandates that the spacing between two neighboring shapes must be 2× the maximum width of one of the shapes minus 10 units.
In addition to the above problems, use of buckets leads to IC designs that are hard to manufacture. In particular, there are two problems that result from the IC design rule implementation using buckets. The first problem is based on the premise that design rules are established prior to the creation of a manufacturable process, and thus, the design rules represent assumptions and commitments of the process made during design. Typically, however, process constraints usually deviate by some amount upon reaching manufacturing. Therefore, a design rule legal layout may be outside the process window capability of the manufacturing process. Avoiding this problem infers that all of a specific “bucket” lies within the manufacturing process capability, which leads to the second problem where productivity is “left on the table.” In particular, the “bucketed” design rules motivate the designer to use the limit provided rather than what is optimal (assuming the process does not follow the same function as the buckets). In particular, designers actually make calculations based on the bucket specifications to determine which size wires to use rather than using the size wire that optimizes their functionality and performance requirements. The end results lead to a non-optimal IC design.
Another problem relative to DRC is that design rules capture diverse physical phenomena, each of which may require a slightly different definition of width and spacing as long as the definition can be treated in a consistent manner. For example in certain cases a shape may need to be evaluated as “thin” as possible, while in other cases it may need to be evaluated as “fat” as possible. Currently, no mechanism exists for applying different definitions of width and spacing for DRC.
In view of the foregoing, there is a need in the art for a way to model an IC design that allows for dimension-dependent design rule checking regardless of shape. It would also be advantageous to be able to implement different definitions of width and spacing.